%include "io.inc"

section .text
global main
main:
    push 10
    push 20
    call avg_fun ; call 命令会将下一条指令的地址压栈后进行跳转
    add esp, 8   ; 修改 esp，恢复空栈。也可以两次 pop

    PRINT_DEC 4, eax
    xor eax, eax
    ret

avg_fun:
    xor eax, eax          ; eax = 0
    add eax, [esp + 4]    ; eax += 10
    add eax, [esp + 8]    ; eax += 20
    sar eax, 1            ; 右移 1 位
    ret ; 此时栈顶元素记录的是要跳回的位置，执行 ret 会弹栈并跳回
